In a Fibre Channel-to-SCSI router architecture, one SCSI initiator (interface), such as a SCSI router, can speak to SCSI targets on behalf of many Fibre Channel initiators (hosts). These Fibre Channel hosts can be attached to the SCSI router from many different interfaces. However, a SCSI target is only aware of the SCSI router interface connection to which it is directly attached. If two or more Fibre Channel hosts issue commands to the same target device, the target device sees all the commands as originating from the router. The target device is not aware of the individual Fibre Channel hosts.
In the SCSI architecture, a streaming target device, such as a tape backup device, is a target device that must complete execution of one command before another subsequent command from the same host can be recognized. A host issuing a subsequent command to a streaming target device that is still executing a prior command from the same host is issued a check condition (overlapped_cmd) response by the streaming target device. This can result in loss of the subsequent command and disruption of I/O transmissions. In a pure SCSI architecture, this is usually not a problem because in a normal situation, a host knows that once it has issued a command to a streaming target device, it cannot issue a subsequent command to the streaming target device until the earlier command has been fully executed. Moreover, in a multi-host SCSI environment, a streaming target device is able to differentiate, based on a SCSI ID, between commands issued to it by different hosts. If a streaming target device in a pure SCSI environment is currently executing a command from one host when another command from a different host is received, the streaming target device simply issues a reply to the second host indicating that it is busy. No disruption occurs, as would be the case if both commands were from the same host.
In a Fibre Channel-to-SCSI architecture, however, a SCSI router serves as the interface between the Fibre Channel portion of the network and the SCSI targets downstream of the router. The SCSI targets downstream of the SCSI router see the SCSI router as a single host originating all commands from any Fibre Channel hosts on the Fibre Channel portion of the network. As a result, a streaming target device receiving concurrent multiple commands from different Fibre Channel hosts through the SCSI router is not able to differentiate between Fibre Channel hosts and treats all the commands as originating from a single host. The streaming target device will therefore issue a check condition (overlapped_cmd) in response to any subsequent commands received while it is executing a prior command. The inability of current systems and methods to effectively process multiple concurrent commands to streaming target devices in a Fibre Channel network are thus particularly disruptive to network performance in a multi-host Fibre Channel-to-SCSI network architecture.
A streaming target device can be any device which is sequentially accessed, for example, some types of CD-ROMs, optical storage devices, and tape backups. When either the same host or, in the case of a multi-host Fibre Channel network, another host issues a command to a streaming target device before a prior command has completed execution, the second command is rejected, causing a decline in network performance and possible loss of data. Although normally the same host will not issue multiple concurrent commands to a streaming target device, in a multi-host Fibre Channel network environment, individual Fibre Channel hosts are unaware of the commands issued by the other hosts on the network to a particular streaming target device. Each host in the Fibre Channel network sees a target device as if it alone is speaking to the target device. As a result, a host on the network can unknowingly issue an overlapping command to a streaming target device executing a command from another host.
When a streaming target device receives a second command (or a third or fourth command) before completion of a prior command, it will cause a check condition (overlapped_cmd) response to issue to the host issuing the subsequent concurrent command. This can cause the host that issued the subsequent concurrent command(s) to go into error recovery. In particular, in a multi-host Fibre Channel network even an inquiry command (when a host first comes on-line or gets rebooted, it will issue an inquiry command on the network BUS to determine what other devices are on the network) can cause a disruption if the streaming target device is already executing a prior command.
The rejection of subsequent concurrent commands by a streaming target device can result in a loss of data. For example, many tape backup devices do not handle errors. If multiple commands from the same host are issued to such a tape backup device, it will abort the whole backup. Therefore, even a host coming on-line (or rebooting) that issues an inquiry command to determine what devices are on the network can cause a tape backup in progress to be aborted. This can result in corrupted or lost data and in disruption of I/Os between hosts and target devices. Because of the inability of current systems and methods to handle multiple concurrent commands to a streaming target device, some operations may have to be completely re-executed, and not simply restarted.
Additionally, although normally a host talking to a streaming target device will not issue overlapping commands, it is possible for a host to experience an error and issue multiple concurrent commands to a streaming target device. In such a case, the same disruptions in I/Os and possible corruption of data can occur.